草庐IT

Java Swingworker 和多线程

全部标签

android - 如何清除 UI 线程队列

我使用runOnUIThread方法将Runnable任务传递给主线程队列,但我需要清除我之前发送的所有队列任务,然后再发送新任务.怎么做? 最佳答案 使用Handler发布。它与runOnUiThread具有相同的效果。在您的处理程序实例上,您可以调用removeCallbacks(null),这将删除Handler队列中的每个元素,或者调用removeCallbacks(yourannableinstance)来删除yourannableinstance的每个元素种类 关于andro

【Java】你掌握了多线程吗?

【文末送书】今天推荐一本Java多线程编程领域新书《一本书讲透Java线程》摘要互联网的每一个角落,无论是大型电商平台的秒杀活动,社交平台的实时消息推送,还是在线视频平台的流量洪峰,背后都离不开多线程技术的支持。在数字化转型的过程中,高并发、高性能是衡量系统性能的核心指标,越来越多的公司对从业人员的多线程编程能力提出了更高的要求。目录摘要01多线程对于Java的意义02为什么Java工程师必须掌握多线程03Java多线程使用方式04如何学好Java多线程05文末送书《一本书讲透Java线程:原理与实践》一书深入介绍了Java线程的并发控制实现,在描述其原理的同时,详细解读了它们在真实业务场景下

android - 实现线程安全读/写访问的 SQLite 管理器?

我计划改进我的SQLite实现-目前,Activity在需要一些相关数据时打开SQLite数据库,然后关闭它。关闭数据库对于避免异常很重要。我的设计目标:对应用程序的SQLite数据库的线程安全访问同步操作我想我会做的是实现某种“Manager”类而不是我的基本“SQLhelper”类。我想要同步操作,这样就排除了将其作为带有消息的服务来实现。我认为实现这个“SQLiteManager”的最佳方式是作为一个单例。有没有更好的实现方式? 最佳答案 第1步-扩展Application类importandroid.app.Applicat

java - 构造后设置 Java 线程的 Runnable

JDK7Java文档建议使用以下两种习惯用法来创建Java线程:扩展线程并覆盖run()classPrimeThreadextendsThread{longminPrime;PrimeThread(longminPrime){this.minPrime=minPrime;}publicvoidrun(){//computeprimeslargerthanminPrime...}}...//AndtolaunchthecustomThreadPrimeThreadp=newPrimeThread(143);p.start();实现Runnable并创建一个新线程,将Runnableimp

java - 暂停所有线程花费了 : ms warning using Threads - Android

我有2个Thread进行一些网络计算。当我运行我的应用程序并启动我的第二个Thread后,我得到:挂起所有线程耗时:毫秒警告后跟:后台粘性并发标记扫描GC释放了246745(21MB)个AllocSpace对象,169(6MB)个LOS对象,33%空闲,31MB/47MB,暂停1.972ms,总计127.267ms警告。有时我只会收到这2条警告,而其他时候我会收到很多这2条警告,直到我决定终止正在运行的应用程序。此时,它只是在运行主Thread,基本上什么都不做。相关代码如下:MainActivity.java:protectedvoidonCreate(BundlesavedInst

android - BlockingGet 阻止 UI 线程 RxJava 2

我正在处理这个问题。我正在尝试以同步方式调用RxJava,但是这样做会导致阻塞主线程。这是我的代码@OverridepublicSinglegetSettings(){SettingsBundlesettingsModel=mSettingsManager.getSettings();returnSingle.just(settingsModel).map(mSettingsMapper);}这是我的同步调用@OverridepublicSettingsBundlegetSettingsSync(){returngetSettings().blockingGet();}当调用getSe

在C中使用多线程显示质数

在函数printPrime中,我用四个线程中的每个线程都在每个元素上迭代,这几乎等同于一个螺纹程序。我想通过i=i+max_threads递增“i”。我正在使用四个线程,因为我的笔记本电脑具有四个处理器,并且已完全优化。有人可以告诉我如何调整printprime,以便每个线程都在一个数字上迭代。例如,线程1检查2,6,10.....Thread2检查3,7,11...等等。#include#include#defineN30#defineMAX_THREADS4intprime_arr[N]={0};void*printprime(void*ptr){intj,flag;inti=(int)(

android - 你如何循环线程?

我有一个包含可运行的线程。我需要它无限循环,除非被用户取消。我不知道该怎么做。非常感谢所有帮助。干杯。 最佳答案 Ineedthistoloopinfinitelyunlesscancelledbytheuser.显然,您可以轻松地在run()方法中添加一个循环:newThread(newRunnable(){publicvoidrun(){while(true){//dosomethingintheloop}}}).start();检查线程中断总是一个好主意:newThread(newRunnable(){publicvoidru

android - LocationManager:java.lang.RuntimeException:无法在尚未调用 Looper.prepare() 的线程内创建处理程序

我认为从另一个线程在UI线程上执行某些操作时通常会出错,但我不明白自己做错了什么。该错误似乎只在手机旅行时出现,因此GPS位置不断变化。我想存储最近的位置,所以UI上没有任何内容。我从主要Activity中调用了以下方法:publicvoidgetFreshDeviceLocation(longinterval,finallongmaxtime){if(gps_recorder_running){return;}gpsTimer=newTimer();//startslocationstartMillis=System.currentTimeMillis();//receiveupda

android - android相机和线程安全问题

正如Androiddocumentationonhandlingthecamera中指出的那样,建议使用单独的线程打开相机。好吧,我正在这样做,但确实有一些困难:对于我的相机对象,我使用了一个全局实例变量。现在,当我启动我的应用程序时,我在onResume()中创建了一个单独的线程,并在该线程中为该相机对象进行所有初始化。稍后当我离开应用程序时,我在onPause()中释放相机。这一切都很好。但问题是:当我做了一些压力测试并在onResume()和onPause()之间快速切换时(通过点击多任务按钮速度过快)我的应用程序崩溃了。原因是有一个在release()之后调用的方法。这是有道理